/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.dew.serviciosmultiples.controller;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import pe.edu.upc.dew.serviciosmultiples.exception.ServiceException;
import pe.edu.upc.dew.serviciosmultiples.service.TecnicoService;
import pe.edu.upc.dew.serviciosmultiples.model.Solicitud;
import pe.edu.upc.dew.serviciosmultiples.model.Tecnico;
import static pe.edu.upc.dew.serviciosmultiples.util.Constants.SOLICITUD_ACT;
import static pe.edu.upc.dew.serviciosmultiples.util.Constants.TECNICO_LIST;
import static pe.edu.upc.dew.serviciosmultiples.util.Constants.USUARIO_ACT;
import static pe.edu.upc.dew.serviciosmultiples.util.Constants.FECHA_ACT;

/**
 *
 * @author bcano
 */
public class TecnicoController extends MultiActionController {

    private TecnicoService tecnicoService;

    public TecnicoService getTecnicoService() {
        return tecnicoService;
    }

    public void setTecnicoService(TecnicoService tecnicoService) {
        this.tecnicoService = tecnicoService;
    }

   public ModelAndView index(HttpServletRequest request, HttpServletResponse response, Tecnico tecnicoForm ) throws ServiceException {
        System.out.print("entro lista tecnico :");
        ModelAndView modelAndView = new ModelAndView("tecnicoList");
        HttpSession session = request.getSession();
        
        try {
            Solicitud solicitudForm = (Solicitud) session.getAttribute(SOLICITUD_ACT);
            List<Tecnico> voList = tecnicoService.buscarTecnicoServicio(solicitudForm);
            session.setAttribute(TECNICO_LIST, voList);
            System.out.print("lista tecnico :" + voList.size());
            modelAndView.addObject("voList",voList);

        } catch(ServiceException ex) {
            System.err.println(ex.toString());
        } catch(Exception ex) {
            System.err.println(ex.toString());
        }

        request.setAttribute("solicitud", tecnicoForm);
        request.setAttribute("usuario", session.getAttribute(USUARIO_ACT));
        request.setAttribute("now", session.getAttribute(FECHA_ACT));
        return modelAndView;
    }

       public ModelAndView seleccionarTecnico(HttpServletRequest request, HttpServletResponse response, Tecnico tecnicoForm ) {
        System.out.println("entro seleccionarTecnico : ");

        HttpSession session = request.getSession();
        String idTecnico = request.getParameter("codigo");
        Integer idTecnicoAct = Integer.parseInt(idTecnico);
        Solicitud solicitudForm = (Solicitud) session.getAttribute(SOLICITUD_ACT);

        try {
            Tecnico tecnico = buscarTecnico(session,idTecnicoAct);
            session.removeAttribute(TECNICO_LIST);

            solicitudForm.setTecnico(tecnico);
            solicitudForm.setStrTecnico(tecnico.getNombre() + " " +tecnico.getApellido());
            session.setAttribute("solicitud_act", solicitudForm);

            System.out.println("entro seleccionarTecnico solicituForm : " + solicitudForm.getIdSolicitud());
        } catch(Exception ex) {
            System.err.println(ex.toString());
        }

        return new ModelAndView("redirect:/solicitudAct.htm");
    }

    private Tecnico buscarTecnico(HttpSession session, Integer idTecnicoAct) {
        List<Tecnico> voList = (List<Tecnico>) session.getAttribute(TECNICO_LIST);
        Tecnico tecnico = new Tecnico();
        for (Tecnico voTecnico : voList) {
            if(voTecnico.getIdTecnico() == idTecnicoAct){
                tecnico.setIdTecnico(voTecnico.getIdTecnico());
                tecnico.setNombre(voTecnico.getNombre());
                tecnico.setApellido(voTecnico.getApellido());
                break;
            }
        }
        return tecnico;
    }

}
